CREATE PROCEDURE [dbo].[Sodor_Factor_Drug] @Msg_Num Numeric(18,0) OUTPUT,@TmpId  Numeric(18,0)
 AS
 Set @Msg_Num =0
 Declare @Par_No Varchar(9)
 Declare @Bedeh Money
 Declare @Bestan Money
 Declare @KindSave Char(1)
 Declare @Last_Id  Numeric(18,0)
 Declare @iCount   SMALLINT
 DECLARE @IsClub BIT
 DECLARE @ClubId INT 
 
 Select @Par_No = Par_No, @IsClub = IsClub  From TmpDrugH Where Id_Havaleh = @TmpId  
 Select @iCount = Count(*) From TmpDrugHavaleh  Where Id_Havaleh = @TmpId  
 IF (Select Count(*)  From Dbo.TmpDrugH Where Id_Havaleh = @TmpId  ) > 0   
 Begin
    Select @Bedeh = Bedehkar, @Bestan = Bestankar, @Par_No = Par_No, @KindSave = Kind_Save From TmpDrugH Where Id_Havaleh = @TmpId 
    IF  @KindSave not in (3,4)   Set @KindSave = 0
    
    IF @KindSave <> 3
       IF (Select Count(*) from LESS_Mojodi_Drug(@TmpId))  > 0 
       Begin
           Set  @Msg_Num= -1  
           RETURN @Msg_Num
       End
     
       IF ((@Par_No = '' Or @Par_No Is Null) And (@iCount = 0))
       Begin
          Set  @msg_num=-6
          RETURN @Msg_Num 
      End

      Begin Tran SF

      IF @Bestan > 0 
         Insert Into Dbo.DrugH(Kind_Flag,Kind_Save,Nu_Forosh,Nu_Bargasht_Forosh,Del_Flag,Note_Code,Dumy_Code,Grade_Code, Nezam_No,Resive_Name,Trans_Name,Sazman_Code,Radif_Noskheh,Computer_Code,Page_No,User_Cash,TotPriceBimar,TotPriceSazman,TotPriceDiffer,TotPriceAzad,TotPriceKala,TotPriceTaghizat,TotPriceOTC,HOTC, TotPriceFaniBimar,TotPriceFaniSazman,TotPriceDaryafti,TotPriceforosh,TotPriceAfzayandeh,TotPriceKahandeh,User_id,Tarikh_Etebar,Tarikh_Noskheh,Tarikh_Paziresh,OverFlagBimeh, HospitalFlag,Pt_Code, Bedehkar, Bestankar, Par_No , NumberQueue,CheckU, FamilyDoctorCode, Per_Bimar)
                                Select Kind_Flag,@KindSave,Nu_Forosh,Nu_Bargasht_Forosh,Del_Flag,Note_Code,Dumy_Code,Grade_Code, Nezam_No,Resive_Name,Trans_Name,Sazman_Code,Radif_Noskheh,Computer_Code,Page_No,User_Cash,0,0,0,0,0,0,0,0, 0,0,TotPriceDaryafti,0,0,0,User_id,Tarikh_Etebar,Tarikh_Noskheh,Tarikh_Paziresh,OverFlagBimeh, HospitalFlag, Pt_Code, Bedehkar, Bestankar, Par_No, NumberQueue,CheckU, FamilyDoctorCode, Per_Bimar From TmpDrugH
                                Where Id_Havaleh=@TmpId	
      Else
         Insert Into Dbo.DrugH(Kind_Flag,Kind_Save,Nu_Forosh,Nu_Bargasht_Forosh,Del_Flag,Note_Code,Dumy_Code,Grade_Code, Nezam_No,Resive_Name,Trans_Name,Sazman_Code,Radif_Noskheh,Computer_Code,Page_No,User_Cash,TotPriceBimar,TotPriceSazman,TotPriceDiffer,TotPriceAzad,TotPriceKala,TotPriceTaghizat,TotPriceOTC,HOTC, TotPriceFaniBimar,TotPriceFaniSazman,TotPriceDaryafti,TotPriceforosh,TotPriceAfzayandeh,TotPriceKahandeh,User_id,Tarikh_Etebar,Tarikh_Noskheh,Tarikh_Paziresh,OverFlagBimeh, HospitalFlag,Pt_Code, Bedehkar, Bestankar, Par_No,NumberQueue,CheckU, FamilyDoctorCode, Per_Bimar)
                                Select Kind_Flag,@KindSave, Nu_Forosh,Nu_Bargasht_Forosh,Del_Flag,Note_Code,Dumy_Code,Grade_Code, Nezam_No,Resive_Name,Trans_Name,Sazman_Code,Radif_Noskheh,Computer_Code,Page_No,User_Cash,TotPriceBimar,TotPriceSazman,TotPriceDiffer,TotPriceAzad,TotPriceKala,TotPriceTaghizat,TotPriceOTC,HOTC, TotPriceFaniBimar,TotPriceFaniSazman,TotPriceDaryafti,TotPriceforosh,TotPriceAfzayandeh,TotPriceKahandeh,User_id,Tarikh_Etebar,Tarikh_Noskheh,Tarikh_Paziresh,OverFlagBimeh, HospitalFlag, Pt_Code, Bedehkar, Bestankar, Par_No,NumberQueue,CheckU, FamilyDoctorCode,Per_Bimar From TmpDrugH
                                Where Id_Havaleh=@TmpId	
       IF @@Error > 0  
       Begin
            Set  @Msg_Num= -5  
            ROLLBACK TRANSACTION SF
            RETURN @Msg_Num 
       End
    
       Select  @Last_Id = Scope_Identity()
    
       IF  @iCount > 0
       Begin
            Insert Into Dbo.DrugHavaleh(Id_Havaleh,AutoId,Sender,Reciver,Radif,K_Code,K_Qty1,Price_Kharid,Price_Forosh,Main_Price,Status,Takhfif_Flag,Point_Flag,Serial_Flag,Hamrah_Flag,Exp_Flag,Make_Flag,CtrMojodi,Tot_forosh,Tot_Differ,Link_Like, Link_Record, EditQty_Flag, BimarPercent, JetId)
                                          Select  @Last_Id ,AutoId,Sender,Reciver,Radif,K_Code,K_Qty1,Price_Kharid,Price_Forosh,Main_Price,Status,Takhfif_Flag,Point_Flag,Serial_Flag,Hamrah_Flag,Exp_Flag,Make_Flag,CtrMojodi,Tot_forosh,Tot_Differ,Link_Like,Link_Record, EditQty_Flag,BimarPercent ,JetId
                                          From TmpDrugHavaleh Where Id_Havaleh=@TmpId  
       
           IF @@Error > 0  
           Begin
                Set  @Msg_Num= -5  
                ROLLBACK TRANSACTION SF
                RETURN @Msg_Num 
           End
       
--------------------------------------------------------------------------------------------------------------------
         --                  
           IF (SELECT Count(*) FROM  dbo.Tmp_Over_Under_Factor_Drug   WHERE     (Id_Havaleh = @TmpId)) > 0 
               Insert Into dbo.Over_Under_Factor_Drug(Id_Havaleh, Code_Over_Under ,Type ,Price ,[Percent] , Act_Code , Guy_Code)
                           Select  @Last_Id, Code_Over_Under ,Type ,Price , [Percent] , Act_Code , Guy_Code
                           From Tmp_Over_Under_factor_Drug  Where (Id_Havaleh=@TmpId And Price > 0) 
       
           IF @@Error > 0  
           Begin
                Set  @Msg_Num= -5  
                ROLLBACK TRANSACTION SF
                RETURN @Msg_Num 
           End
----------------------------------------------------------------------------------------------------------------------
           IF (SELECT Count(*) FROM  dbo.Tmp_Over_Under_Factor_Cash   WHERE     (Id_Havaleh = @TmpId)) > 0 
               Insert Into dbo.Over_Under_Factor_Drug(Id_Havaleh, Code_Over_Under ,Type ,Price ,[Percent] , Act_Code, Guy_Code)
                           Select  @Last_Id, Code_Over_Under ,Tmp_Over_Under_Factor_Cash.Type ,Price , [Percent] , Tmp_Over_Under_Factor_Cash.Act_Code, '-4'
                           From Tmp_Over_Under_factor_Cash  inner join Over_Under on Over_Under.AutoId = Code_Over_Under
                           Where (Id_Havaleh=@TmpId And Price > 0) 
               
           IF @@Error > 0  
           Begin
                Set  @Msg_Num= -5  
                ROLLBACK TRANSACTION SF
                RETURN @Msg_Num 
           End
----------------------------------------------------------------------------------------------------------------------
       --                      
              INSERT INTO Dbo.Over_Under_Row_Drug (PrescriptionId,name,Code_Act,Type,Price,[Percent],Code_Over_Under)
              SELECT  Tmp_Over_Under_Row_Drug.PrescriptionId, Tmp_Over_Under_Row_Drug.name, Tmp_Over_Under_Row_Drug.Code_Act, 
                            Tmp_Over_Under_Row_Drug.Type, Tmp_Over_Under_Row_Drug.Price, Tmp_Over_Under_Row_Drug.[Percent], 
                            Tmp_Over_Under_Row_Drug.Code_Over_Under FROM  TmpDrugHavaleh INNER JOIN
                            Tmp_Over_Under_Row_Drug ON TmpDrugHavaleh.AutoId = Tmp_Over_Under_Row_Drug.PrescriptionId
                            WHERE  TmpDrugHavaleh.Id_Havaleh = @TmpId And Price > 0 
           IF @@Error > 0  
           BEGIN
                SET  @Msg_Num= -5  
                ROLLBACK TRANSACTION SF
                RETURN @Msg_Num 
           END
      ---------------------------------------------------------------------------------------------------------------------------------------
            Exec sp_CreateParByReferDay @TmpId
	 ----------------------------------------(Club Save info)---------------------------------------------------------
     IF IsNull(@IsClub,0) = 1 
	 BEGIN 
        DECLARE @FactorId UNIQUEIDENTIFIER = NEWID()     
        EXEC @ClubId =  ClubMemberShipDrug @TmpId,0
	    IF @ClubId <> 0 
	    BEGIN 
			EXEC @Msg_Num = dbo.Club_SaveInfoDrug @TmpId, @Last_Id,@FactorId, @ClubId
			IF @Msg_Num < 0  
			BEGIN
			  SET @msg_num=-5  
			  ROLLBACK TRANSACTION
			  RETURN @msg_num 
		    END   
	   END  
	END 
     ------------------------------------------------------------------------------------------------
           
            Delete From dbo.TmpDrugH   where  Id_Havaleh=@TmpId 
            Delete From dbo.Tmp_Over_Under_Factor_Cash where  Id_Havaleh=@TmpId 
 
      
            Select @Msg_Num=@Last_Id
            Commit Tran SF
            RETURN @Msg_Num
      End  -- IF  (@iCount) > 0
      Else
      Begin
           Set  @msg_num=10
           Delete From dbo.TmpDrugH   where  Id_Havaleh=@TmpId 
           Commit Tran SF
           RETURN @msg_num
      End
 End  -- IF (Select Count(*)  From Dbo.TmpDrugH Where Id_Havaleh = @TmpId  ) > 0   
 Else
 Begin
    Set  @msg_num=-2 
    RETURN @msg_num
    Print  'Not Exists For Sodor Factor'
 End
